/*************************************************************************
	> File Name: analysis.c
	> Author: 
	> Mail: 
	> Created Time: 2018年11月05日 星期一 21时06分30秒
 ************************************************************************/

#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<math.h>
#include"../include/gps.h"

int gps_analyse(char *buff,GPRMC *gps_data)
{
    char *ptr = NULL;
    if(NULL == gps_data)
    {
        return -1;
    }
    if(strlen(buff) < 10)
    {
        return -1;
    }
    if(NULL == (ptr = strstr(buff,"$GPRMC")))
        {
            return -1;
        }

    sscanf(ptr,"$GPRMC,%d.000,%c,%f,N,%f,E,%f,%f,%d,,,%c*",&(gps_data->time),&(gps_data->pos_state),&(gps_data->latitude),&(gps_data->longitude),&(gps_data->speed),&(gps_data->direction),&(gps_data->date),&(gps_data->mode));

    return 0;
}

/*

void print_gps(GPRMC *gps_data)
{
        printf("==   GPS state bit : %c  [A:有效状态 V:无效状态]              \n",gps_data->pos_state);
        printf("==   GPS mode  bit : %c  [A:自主定位 D:差分定位]               \n", gps_data->mode);
        printf("==   Date : 20%02d-%02d-%02d                                  \n",gps_data->date%100,(gps_data->date%10000)/100,gps_data->date/10000);
        printf("==   Time : %02d:%02d:%02d                                   \n",(gps_data->time/10000+8)%24,(gps_data->time%10000)/100,gps_data->time%100);
        printf("==   纬度 : 北纬:%d度%d分%d秒                              \n", ((int)gps_data->latitude) / 100, (int)(gps_data->latitude - ((
        
        )gps_data->latitude / 100 * 100)), (int)(((gps_data->latitude - ((int)gps_data->latitude / 100 * 100)) - ((int)gps_data->latitude - ((int)gps_data->latitude / 100 * 100))) * 60.0));
        printf("==   经度 : 东经:%d度%d分%d秒                              \n", ((int)gps_data->longitude) / 100, (int)(gps_data->longitude - ((int)gps_data->longitude / 100 * 100)), (int)(((gps_data->longitude - ((int)gps_data->longitude / 100 * 100)) - ((int)gps_data->longitude - ((int)gps_data->longitude / 100 * 100))) * 60.0));
        printf("==   速度 : %.3f  m/s                                      \n",gps_data->speed);

return 0;

}
*/
float get_longitude(GPRMC *gps_data)
{
    double longitude = 0;
    longitude = gps_data->longitude;
    return longitude;
}

float get_latitude(GPRMC *gps_data)
{
    float latitude = 0;
    latitude = gps_data->latitude;
    return latitude;
}

float rad(float d)
{
    return d * PI / 180.0;
}

float getDistance(float lat1,float lng1,float lat2,float lng2)
{
    double radlat1 = rad(lat1);
    double radlat2 = rad(lat2);
    double a = radlat1 - radlat2;
    double b = rad(lng1) - rad(lng2);
    float s = 2 * asin((sqrt(pow(sin(a/2),2)+cos(radlat1)*cos(radlat2)*pow(sin(b/2),2))));
    s = s * EARTH_RADIUS;
    s = round(s*10000)/10000;
    return s;
}




